<?php 

/**
 * Joomla! 1.5 component arts_curriculum
 * @package    arts_curriculum
 * @subpackage
 * @author     Chris Borkowski {@link http://www.guggenheim.org}
 * @author     Created on 11-January-2010
 * @author     Modified on 15-January-2010
 */

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport('joomla.application.component.model');

  	class Arts_curriculumModelSort extends JModel
  	{
		/**
		* Category id
		*
		* @var int
		*/
		var $_id = null;
		/**
		* Category ata array
		*
		* @var array
		*/
		var $_data = null;
		/**
		* Category total
		*
		* @var integer
		*/
		var $_total = null;
		/**
		* Category data
		*
		* @var object
		*/
		var $_category = null;
		/**
		* Pagination object
		*
		* @var object
		*/
		var $_pagination = null;
		/**
		* Constructor
		*
		* @since 1.5
		*/
			
		function __construct()
		{	
			parent::__construct();
			global $mainframe;
			$config = JFactory::getConfig();
			
			// Get the pagination request variables
			$this->setState('limit', $mainframe->getUserStateFromRequest('com_arts_curriculum.limit', 'limit', $config->getValue('config.list_limit'), 'int'));
			$this->setState('limitstart', JRequest::getVar('limitstart', 0, '', 'int'));
			
			// In case limit has been changed, adjust limitstart accordingly
			$this->setState('limitstart', ($this->getState('limit') != 0 ? (floor($this->getState('limitstart') / $this->getState('limit')) * $this->getState('limit')) : 0));
			
			// Get the filter request variables
			$this->setState('filter_order', JRequest::getCmd('filter_order', 'ordering'));
			$this->setState('filter_order_dir', JRequest::getCmd('filter_order_Dir', 'ASC'));
			$id = JRequest::getVar('id', 0, '', 'int');
			$this->setId((int)$id);
		}
		
			/**
			* Method to set the category id
			*
			* @access public
			* @param int category ID number
			*/
		
			function setId($id)
			{
			// Set category ID and wipe data
			$this->_id = $id;
			$this->_category = null;
			}
			
			
			function  _buildWhere()
			{
		
			global $mainframe, $option;
			$search = JRequest::getVar('search');
			
			if ($search =='Artists' && $search !=''){
			$where = "WHERE ii.artist_name  != '' GROUP BY ii.artist_name ASC ";
			
			}elseif ( $search =='Exhibitions' && $search !=''){
			
			$where = "WHERE cc.title NOT LIKE 'AC Utility' GROUP BY cc.title ASC";
			
		    }elseif ( $search =='Visual Arts'&& $search !=''){
			
			$where = "WHERE ii.subject LIKE '%visual%' ";
			
			}elseif ( $search =='Math / Science' && $search !=''){
			
			$where = "WHERE ii.subject LIKE '%math%'";
			
			}elseif ( $search =='Social Studies' && $search !=''){
			
			$where = "WHERE ii.subject LIKE '%social%'";
			
			}elseif ( $search =='Technology' && $search !=''){
			
			$where = "WHERE ii.subject LIKE '%technology'";
			
			}elseif ( $search =='English / Language Arts' && $search !=''){
			
			$where = "WHERE ii.subject LIKE '%english%'";
			
			}elseif ( $search =='Architecture Design' && $search !=''){
			
			$where = "WHERE ii.medium LIKE '%architecture%'";
			
			}elseif ( $search =='Drawing' && $search !=''){
			
			$where = "WHERE ii.medium LIKE '%drawing%'";
			
			}elseif ( $search =='Film / Video' && $search !=''){
			
			$where = "WHERE ii.medium LIKE '%video%'";
			
			}elseif ( $search =='Painting' && $search !=''){
			
			$where = "WHERE ii.medium LIKE '%painting%'";
			
			}elseif ( $search =='Photography' && $search !=''){
			
			$where = "WHERE ii.medium LIKE '%photography%'";
			
			}elseif ( $search =='Print' && $search !=''){
			
			$where = "WHERE ii.medium LIKE '%print%'";
			
			}elseif ( $search =='Mixed Media' && $search !=''){
			
			$where = "WHERE ii.medium LIKE '%mixed%'";
			
			}elseif ( $search =='Sculpture' && $search !=''){
			
			$where = "WHERE ii.medium LIKE '%sculpture%'";
			
			}
			
			return $where;
			
			}
			
			/**
			* Method to build order clause.
			*
			* @access private
			* @return boolean True on success
			*/
			
			function  _buildOrderby()
			{
		
			global $mainframe, $option;
			$search = JRequest::getVar('search');
			
			if ($search =='artists'){
			$order = "";
			
			}elseif ( $search =='exhibtions'){
			
			$order = "ORDER BY cc.title ASC";
			
			}elseif($search !=''){
			
			$order= "ORDER BY ii.title ASC , ii.ordering";
			}
			
			return $order;
			
			}
			
			/**
			* Method to get item data from items and join to exhibiton/theme i.e.category
			*
			* @access public
			* @return array
			*/
			
			function getData()
			{

			$where = $this->_buildWhere();
			$order = $this->_buildOrderby();
			
			// Lets load the content if it doesn't already exist
			if (empty($this->_data))
			{
			$query = "SELECT ii.id, ii.title , ii.subject , ii.medium, ii.artist_name, cc.id as catID, cc.title as catTITLE FROM #__arts_curriculum as ii LEFT JOIN jos_categories AS cc ON ii.catid = cc.id $where $order";
			$this->_data = $this->_getList($query);
			}
			return $this->_data;
			}
			
			
			/**
			* Method to get the total number of item items for the category
			*
			* @access public
			* @return integer
			*/
			
			function getTotal()
			{
			
			// Lets load the content if it doesn't already exist
			if (empty($this->_total))
			{
			$query = $this->_buildQuery();
			$this->_total = $this->_getListCount($query);
			}
			return $this->_total;
			}
			
			
			/**
			* Method to get a pagination object of the item items for the category
			*
			* @access public
			* @return integer
			*/
			
			function getPagination()
			{
			
			// Lets load the content if it doesn't already exist
			if (empty($this->_pagination))
			{
			jimport('joomla.html.pagination');
			$this->_pagination = new JPagination( $this->getTotal(), $this->getState('limitstart'), $this->getState('limit') );
			}
			return $this->_pagination;
			}
			
			
			/**
			* Method to get category data for the current category
			*
			* @since 1.5
			*/
			
			function getCategory()
			{
			
			// Load the Category data
			if ($this->_loadCategory())
			{
			
			// Initialize some variables
			$user = &JFactory::getUser();
			// Make sure the category is published
			//if (!$this->_category->published) {
			//JError::raiseError(404, JText::_("Resource Not Found"));
			//return false;
			//}
			// check whether category access level allows access
			
			if ($this->_category->access > $user->get('aid', 0)) {
			JError::raiseError(403, JText::_("ALERT - NOTAUTH"));
			return false;
			}
			
			}
			return $this->_category;
			}
			
			
			/**
			* Method to load category data if it doesn't exist.
			*
			* @access private
			* @return boolean True on success
			*/
			
			function _loadCategory()
			{
			if (empty($this->_category))
			{
			
			// current category info
			$query = 'SELECT c.*, ' .
			'c.title as cat_title,'.
			' CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(\':\', c.id, c.alias) ELSE c.id END as slug '.
			
			' FROM #__categories AS c' .
			' WHERE c.id = '. (int) $this->_id .
			' AND c.section = "com_arts_curriculum"';
			
			$this->_db->setQuery($query, 0, 1);
			$this->_category = $this->_db->loadObject();
			}
			return true;
			
			}
			
			
			function _buildQuery()
			{
			
			$filter_order = $this->getState('filter_order');
			$filter_order_dir = $this->getState('filter_order_dir');
			$filter_order = JFilterInput::clean($filter_order, 'cmd');
			$filter_order_dir = JFilterInput::clean($filter_order_dir, 'word');
			
			// We need to get a list of all items in the given category
			$query = 'SELECT *' .
			' FROM #__arts_curriculum' . 
			"WHERE `subject` LIKE CONVERT('%visual arts%')";
			//$where ;
			//' AND archived = 0'.
			//' ORDER BY '. $filter_order .' '. $filter_order_dir .', ordering';
			
			return $query;
			}

}